bleh
[mqlkit.git] / indicators / ATR Channels.mq4
blobb4945bbd26fc2eb882acc4c3002e1a62eb12f873
1 //+------------------------------------------------------------------+\r
2 //|                                                 ATR Channels.mq4 |\r
3 //|                         Copyright © 2005, Luis Guilherme Damiani |\r
4 //|                                      http://www.damianifx.com.br |\r
5 //+------------------------------------------------------------------+\r
6 \r
7 #property copyright "Copyright © 2005, Luis Guilherme Damiani"\r
8 #property link      "http://www.damianifx.com.br"\r
9 #property indicator_chart_window\r
10 #property  indicator_buffers 7\r
11 #property  indicator_color1  Aqua //Moving Average\r
12 #property  indicator_color2  DeepSkyBlue // Lower band 1\r
13 #property  indicator_color3  DeepSkyBlue // Upper band 1\r
14 #property  indicator_color4  RoyalBlue // Lower band 2\r
15 #property  indicator_color5  RoyalBlue // Upper band 2\r
16 #property  indicator_color6  BlueViolet // Lower band 3\r
17 #property  indicator_color7  BlueViolet // Upper band 3\r
18 //---- indicator buffers\r
19 double     MA_Buffer0[];\r
20 double     Ch1up_Buffer1[];\r
21 double     Ch1dn_Buffer2[];\r
22 double     Ch2up_Buffer3[];\r
23 double     Ch2dn_Buffer4[];\r
24 double     Ch3up_Buffer5[];\r
25 double     Ch3dn_Buffer6[];\r
27 //---- input parameters\r
28 extern int       PeriodsATR=18;\r
29 extern int       MA_Periods=49;\r
30 extern int       MA_type=MODE_LWMA;\r
31 extern double       Mult_Factor1= 1.6;\r
32 extern double       Mult_Factor2= 3.2;\r
33 extern double       Mult_Factor3= 4.8;\r
35 //+------------------------------------------------------------------+\r
36 //| Custom indicator initialization function                         |\r
37 //+------------------------------------------------------------------+\r
38 int init()\r
39   {\r
40   string mat;\r
41  \r
42 //---7- indicators\r
43 // MA\r
44    SetIndexStyle(0,DRAW_LINE);\r
45    SetIndexBuffer(0,MA_Buffer0);\r
46    SetIndexDrawBegin(0,0);\r
47    /*if (MA_type==MODE_LWMA)SetIndexLabel(0,"WMA"+MA_Periods) else \r
48    {\r
49       if (MA_type==MODE_SMA) SetIndexLabel(0,"SMA"+MA_Periods) else\r
50       {\r
51          if (MA_type==MODE_EMA) SetIndexLabel(0,"EMA"+MA_Periods) else \r
52          SetIndexLabel(0,"SMMA"+MA_Periods);\r
53       }; \r
54    };*/      \r
55   // ATR 1 up\r
56    SetIndexStyle(1,DRAW_LINE);\r
57    SetIndexBuffer(1,Ch1up_Buffer1);\r
58    SetIndexDrawBegin(1,0);\r
59    SetIndexLabel(1,"ATRu "+PeriodsATR+", "+Mult_Factor1);\r
60   // ATR 1 down\r
61    SetIndexStyle(2,DRAW_LINE);\r
62    SetIndexBuffer(2,Ch1dn_Buffer2);\r
63    SetIndexDrawBegin(2,0);\r
64    SetIndexLabel(2,"ATRd "+PeriodsATR+", "+Mult_Factor1);\r
65 // ATR 2 up\r
66    SetIndexStyle(3,DRAW_LINE);\r
67    SetIndexBuffer(3,Ch2up_Buffer3);\r
68    SetIndexDrawBegin(3,0);\r
69    SetIndexLabel(3,"ATRu "+PeriodsATR+", "+Mult_Factor2);\r
70   // ATR 2 down\r
71    SetIndexStyle(4,DRAW_LINE);\r
72    SetIndexBuffer(4,Ch2dn_Buffer4);\r
73    SetIndexDrawBegin(4,0);\r
74    SetIndexLabel(4,"ATRd "+PeriodsATR+", "+Mult_Factor2);\r
75    // ATR 3 up\r
76    SetIndexStyle(5,DRAW_LINE);\r
77    SetIndexBuffer(5,Ch3up_Buffer5);\r
78    SetIndexDrawBegin(5,0);\r
79    SetIndexLabel(5,"ATRu "+PeriodsATR+", "+Mult_Factor3);\r
80   // ATR 3 down\r
81    SetIndexStyle(6,DRAW_LINE);\r
82    SetIndexBuffer(6,Ch3dn_Buffer6);\r
83    SetIndexDrawBegin(6,0);\r
84    SetIndexLabel(6,"ATRd "+PeriodsATR+", "+Mult_Factor3);\r
85 //----\r
86    return(0);\r
87   }\r
88 //+------------------------------------------------------------------+\r
89 //| Custor indicator deinitialization function                       |\r
90 //+------------------------------------------------------------------+\r
91 int deinit()\r
92   {//---- \r
93    \r
94 //----\r
95    return(0);\r
96   }\r
97 //+------------------------------------------------------------------+\r
98 //| Custom indicator iteration function                              |\r
99 //+------------------------------------------------------------------+\r
100 int start()\r
101   {\r
102    int fixed_bars=IndicatorCounted();\r
103    for(int i=0;i< Bars - fixed_bars;i++)\r
104      {\r
105          double atr=iATR(NULL,0,PeriodsATR,i);\r
106          double ma=iMA(NULL,0,MA_Periods,0,MA_type,PRICE_TYPICAL,i);\r
107          MA_Buffer0[i]=ma;\r
108          Ch1up_Buffer1[i]=ma+atr*Mult_Factor1;\r
109          Ch1dn_Buffer2[i]=ma-atr*Mult_Factor1;\r
110          \r
111          Ch2up_Buffer3[i]=ma+atr*Mult_Factor2;\r
112          Ch2dn_Buffer4[i]=ma-atr*Mult_Factor2;\r
113          \r
114          Ch3up_Buffer5[i]=ma+atr*Mult_Factor3;\r
115          Ch3dn_Buffer6[i]=ma-atr*Mult_Factor3;\r
116       }  \r
117    \r
118 //---- \r
119    \r
120 //----\r
121    return(0);\r
122   }\r